package com.ybkj.o2o.mc.service;


import com.ybkj.o2o.mc.common.query.EnterpriseQuery;
import com.ybkj.o2o.mc.entity.Enterprise;

import java.util.List;


/**
 * Created by shine on 15/8/19.
 */
public interface EnterpriseService {
  /**
   * 判断企业名称是否存在.
   *
   * @param name   企业名称
   * @param appKey 系统key
 * @param companyId 
   * @return true存在, false不存在
   */
  boolean exists(String name, String appKey, Long companyId);

  /**
   * 保存企业基本信息.
   *
   * @param enterprise 企业信息
   * @return 企业信息
   */
  int insert(Enterprise enterprise);

  /**
   * 根据主键和系统key查询企业信息.
   *
   * @param enterpriseId 企业主键
   * @param appKey       系统key
   * @return 企业信息
   */
  Enterprise findByIdAndAppKey(Long enterpriseId, String appKey);

  /**
   * 根据主键修改企业基本信息.
   *
   * @param enterprise 企业信息
   * @return 受影响行数
   */
  int updateEnterprise(Enterprise enterprise);

  /**
   * 根据主键和系统key删除企业信息.
   *
   * @param enterpriseId 企业主键
   * @param appKey       系统key
   * @return 受影响行数
   */
  int delete(Long enterpriseId, String appKey);

  /**
   * 修改企业金额信息.
   *
   * @param enterprise 企业信息
   * @return 受影响行数
   */
  int updateBalance(Enterprise enterprise);

  /**
   * 根据条件分页查询企业信息.
   *
   * @param enterpriseQuery 查询条件
   * @return 企业信息列表
   */
  List<Enterprise> findByEnterpriseQuery(EnterpriseQuery enterpriseQuery);

  /**
   * 根据条件统计企业数量.
   *
   * @param enterpriseQuery 查询条件
   * @return 企业数量
   */
  Long countByEnterpriseQuery(EnterpriseQuery enterpriseQuery);

  /**
   * 根据主键查询企业信息.
   *
   * @param id 企业主键
   * @return 企业信息
   */
  Enterprise fetch(Long id);

  int updateCompanyName(Long companyId,String abbreviation, String appKey);

  List<Enterprise> findByGradeId(Long gradeId, String appKey);

  int batchUpdateGrade(Long gradeId, String appKey);

  int disposeGrade(Long gradeId, String gradeName, Long companyId, String appKey);
}
